package com.laogao.jenkinestestpackage01.demos.entity;

import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * 日期时间处理工具类，用于处理查询时的时间范围
 */
public class DateTimeUtils {

    // 日期格式 (yyyy-MM-dd)
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * 包装结束时间，如果输入的是日期格式(yyyy-MM-dd)，则拼接为该日期的最后一刻(yyyy-MM-dd 23:59:59)
     * 如果输入的是日期时间格式，则不做处理
     *
     * @param endTime 原始结束时间字符串
     * @return 处理后的结束时间字符串，或null（如果输入为null）
     * @throws ParseException 如果日期格式不正确
     */
    public static String wrapEndTime(String endTime) throws ParseException {
        if (endTime == null || endTime.trim().isEmpty()) {
            return null;
        }

        String trimmedEndTime = endTime.trim();

        // 判断是否是纯日期格式(长度为10，如yyyy-MM-dd)并验证格式
        if (trimmedEndTime.length() == 10) {
            // 验证日期格式是否正确
            DATE_FORMAT.parse(trimmedEndTime);
            // 直接拼接时间部分
            return trimmedEndTime + " 23:59:59";
        }

        // 如果是日期时间格式，则直接返回
        return trimmedEndTime;
    }

    /**
     * 测试方法
     */
    public static void main(String[] args) {
        try {
            String test1 = "2025-01-16";
            System.out.println("原始结束时间: " + test1 + " -> 处理后: " + wrapEndTime(test1));

            String test2 = "2025-01-16 15:09:33";
            System.out.println("原始结束时间: " + test2 + " -> 处理后: " + wrapEndTime(test2));

            String test3 = null;
            System.out.println("原始结束时间: null -> 处理后: " + wrapEndTime(test3));

            // 测试一个无效的日期格式
            String test4 = "2025/01/16";
            System.out.println("原始结束时间: " + test4 + " -> 处理后: " + wrapEndTime(test4));
        } catch (ParseException e) {
            System.out.println("日期格式错误: " + e.getMessage());
        }
    }
}
